package com.xhj.ipersistent.executor;

import com.xhj.ipersistent.mapping.BoundSql;
import com.xhj.ipersistent.mapping.MappedStatement;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * Executor
 *
 * @author XJks
 * @description 执行器接口
 */
public interface Executor {
    /**
     * 执行更新操作
     */
    int update(MappedStatement mappedStatement, Object parameter) throws SQLException;

    /**
     * 执行查询操作
     */
    <E> List<E> query(MappedStatement mappedStatement, Object parameter, BoundSql boundSql) throws SQLException;

    /**
     * 执行查询操作
     */
    <E> List<E> query(MappedStatement mappedStatement, Object parameter) throws SQLException;

    /**
     * 关闭资源
     */
    void close();

    /**
     * 获取当前执行器使用的数据库连接
     */
    Connection getConnection();
}
